package negocios;

import java.math.BigDecimal;
import negocios.excecoes.CampoNuloOuVazioException;
import negocios.excecoes.LarguraDeCampoException;
import dados.IBancoTamanhoCampos;


public class Insumo {

	private int codigo = 0;
	private String descricao = null;
	private BigDecimal preco = null;
	private String ponto = null;
	private String tipo = null;
	private Classificacao classificacao = null;
	private Unidade unidade = null;
	private Familia familia = null;
	

	public Insumo(int cod, 
			      String des, 
			      BigDecimal pre, 
			      String pon, 
			      String tip, 
			      Classificacao cla, 
			      Unidade uni, 
			      Familia fam) {
		
		this.setCodigo(cod);
		this.setDescricao(des);
		this.setPreco(pre);
		this.setPonto(pon);
		this.setTipo(tip);
		this.setClassificacao(cla);
		this.setUnidade(uni);
		this.setFamilia(fam);
		
	}
	
	public int getCodigo() {
		
		return this.codigo;
		
	}
	
	public String getDescricao() {
		
		return this.descricao;
		
	}
	
	public BigDecimal getPreco() {
		
		return this.preco;
		
	}
	
	public String getPonto() {
		
		return this.ponto;
		
	}
	
	public String getTipo() {
		
		return this.tipo;
		
	}
	
	public Classificacao getClassificacao() {
		
		return this.classificacao;
		
	}
	
	public Unidade getUnidade() {
		
		return this.unidade;
		
	}
	
	public Familia getFamilia() {
		
		return this.familia;
		
	}
	
	public void setCodigo(int cod) {
		 
		this.codigo = cod;
	}
	
	public void setDescricao(String des) {
		
		String str = "Descrição do insumo";
		
		if (des == null) {
			
			throw new CampoNuloOuVazioException(str + " não pode ser nulo!");
			
		} else if (des.equals("")) {
			
			throw new CampoNuloOuVazioException(str + " não pode ser vazio!");
			
		} else if (des.length() > IBancoTamanhoCampos.TBINSUMO_DESCRICAO) {
			
			throw new LarguraDeCampoException(str + " não pode ser maior que " +
					                          IBancoTamanhoCampos.TBINSUMO_DESCRICAO + "!");
			
		} else {
			
			this.descricao = des;
			
		}
		
		
	}
	
	public void setPreco(BigDecimal pre) {
		
		this.preco = pre;
		
	}
	
	public void setPonto(String pon) {
		
		String str = "Ponto do insumo";
		
		if (pon == null) {
			
			throw new CampoNuloOuVazioException(str + " não pode ser nulo!");
			
		} else if (pon.equals("")) {
			
			throw new CampoNuloOuVazioException(str + " não pode ser vazio!");
			
		} else if (pon.length() > IBancoTamanhoCampos.TBINSUMO_PONTO) {
			
			throw new LarguraDeCampoException(str + " não pode ser maior que " +
					                          IBancoTamanhoCampos.TBINSUMO_PONTO + "!");
			
		} else {
			
			this.ponto = pon;
			
		}
		
			
	}
	
	public void setTipo(String tip)	{
		
		String str = "Tipo de insumo";
		
		if (tip == null) {
			
			throw new CampoNuloOuVazioException(str + " não pode ser nulo!");
			
		} else if (tip.equals("")) {
			
			throw new CampoNuloOuVazioException(str + " não pode ser vazio!");
			
		} else if (tip.length() > IBancoTamanhoCampos.TBINSUMO_TIPO) {
			
			throw new LarguraDeCampoException(str + " não pode ser maior que " +
					                          IBancoTamanhoCampos.TBINSUMO_TIPO + "!");
			
		} else {
			
			this.tipo = tip;
			
		}		
					
	}
	
	public void setClassificacao(Classificacao cla) {
		
		this.classificacao = cla;
		
	}
	
	public void setUnidade(Unidade uni) {
		
		this.unidade = uni;
	}
	
	public void setFamilia(Familia fam) {
		
		this.familia = fam;
		
	}
	

	

	

	
}
